package com.henu.ocr.service.serviceImpl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.henu.ocr.entity.TemplateItem;
import com.henu.ocr.mapper.TemplateItemMapper;
import com.henu.ocr.mapper.TemplateMapper;
import com.henu.ocr.service.TemplateItemService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service
public class TemplateItemServiceImpl implements TemplateItemService {

    @Resource
    private TemplateItemMapper templateItemMapper;
    @Resource
    private TemplateMapper templateMapper;

    @Override
    @Transactional
    public void batchAddItems(Integer templateId, List<TemplateItem> items) {
        if (templateMapper.selectById(templateId) == null) {
            throw new IllegalArgumentException("模板不存在");
        }

        items.forEach(item -> {
            item.setTemplateId(templateId);
            validateItem(item);
        });
        items.forEach(templateItemMapper::insert);
    }

    @Override
    @Transactional
    public void deleteItemsByTemplate(Integer templateId) {
        templateItemMapper.delete(new QueryWrapper<TemplateItem>()
                .eq("template_id", templateId));
    }

    @Override
    @Transactional
    public void deleteItemById(Integer itemId) {
        templateItemMapper.deleteById(itemId);
    }

    private void validateItem(TemplateItem item) {
        if (item.getTemplateId() == null) {
            throw new IllegalArgumentException("必须关联模板");
        }
        if (item.getX1() == null || item.getX2() == null ||
                item.getY1() == null || item.getY2() == null) {
            throw new IllegalArgumentException("坐标参数不完整");
        }
        if (item.getItemName() == null || item.getItemName().trim().isEmpty()) {
            throw new IllegalArgumentException("项名称不能为空");
        }
    }
}